'use strict';

const Controller = require('egg').Controller;
const jwt = require('jsonwebtoken');

class LoginController extends Controller {

  // 登录
  async login() {
    const { ctx, app } = this;

    // 获取前端传来的用户名和密码
    const { username, password } = ctx.request.body;

    // 验证
    const data = await app.mysql.get('login', { username, password });

    if (data) {
      ctx.body = {
        token: jwt.sign(data.id, '1907A'),
        code: 1,
      };
    } else {
      ctx.status = 401;

      ctx.body = {
        code: 0,
        msg: '用户名或者密码错误',
      };
    }
  }

  // 注册
  async getRegister() {
    const { ctx, app } = this;

    const { username, password } = ctx.request.body;

    const data = await app.mysql.get('login', { username, password });

    if (data) {
      ctx.body = {
        code: 2,
        msg: '账号已被注册，可以直接登录，如果忘记密码，可以通过邮箱找回',
      };
    } else {
      // 将用户名和密码以及邮箱 添加到数据库中
      await app.mysql.insert('login', {
        username,
        password,
        name: '新用户',
        // img: 'https://img0.baidu.com/it/u=4125559692,3819825694&fm=253&fmt=auto&app=138&f=JPEG?w=670&h=500',
        // auth: '100',
        // role: '游客',
      });

      ctx.body = {
        code: 1,
        msg: '注册成功，请返回登录页面，去登录',
      };
    }

  }

  // 第三方登录
  async giteeLogin() {
    const { ctx, app } = this;
    // 解构前端传的code
    const { code } = ctx.request.body
    // 查找第三方token
    const resp = await ctx.curl('https://gitee.com/oauth/token', {
      method: 'POST',
      data: {
        grant_type: 'authorization_code',
        code,
        client_id: '5b4fa9f282429747c517bdf8038d7291355deb8070ff899e60751a2d6ac53d25',
        redirect_uri: 'http://localhost:3000/login',
        client_secret: 'cebef9be74260d2017af5a3e797a412454c34006b08f0564bdb7cd1cb1c6fca9',
      },
      dataType: 'json'

    })
    // console.log(resp,'ppp');
    const access_token = resp.data.access_token
    const userdata = await app.curl(`https://gitee.com/api/v5/user?access_token=${access_token}`, { dataType: 'json' })
    // id  login  name  avatar_url
    const data = await app.mysql.get('login', { id: userdata.data.id })
    // 判断data是否存在
    if (!data) {
      await app.mysql.insert('login', {
        username: userdata.data.login,
        password: '567',
        name: userdata.data.name,
        id: userdata.data.id,
        // img:userdata.data.avatar_url,
        // auth:'100,101',
        // role:'游客'
      })
    }

    ctx.body = {
      code: 1,
      msg: '登录成功',
      token: jwt.sign(userdata.data.id, '1907A')
    }
  }


  //   //  获取用户信息
  //   async apiGetUserInfo() {
  //     const { ctx, app } = this;

  //     const { authorization } = ctx.request.headers;

  //     // 解密
  //     const id = jwt.verify(authorization, '1907A');

  //     const userInfo = await app.mysql.get('login', { id });

  //     ctx.body = {
  //       code: 1,
  //       data: userInfo,
  //     };
  //   }

}

module.exports = LoginController;
